package com.tgy.algorithm.leetcode_hot_100;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * https://leetcode.cn/problems/two-sum/description/?envType=study-plan-v2&envId=top-100-liked
 * 给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
 *
 * 你可以假设每种输入只会对应一个答案，并且你不能使用两次相同的元素。
 *
 * 你可以按任意顺序返回答案。
 */

class _1_Solution {
    public int[] twoSum(int[] nums, int target) {

        int[] result = new int[2];
        // k为distance，val 为index
        Map<Integer, Integer> map = new HashMap();

        for (int i = 0; i < nums.length; i++) {
            int distance = target - nums[i];
            if(map.containsKey(distance)) {
                result[0] = map.get(distance);
                result[1] = i;
                return result;
            }
            map.put(nums[i], i);
        }

        return null;
    }
}

public class _001_1_两数之和 {
    public static void main(String[] args) {
        _1_Solution solution = new _1_Solution();
        int[] result = solution.twoSum(new int[]{1,4,2, 7, 11, 15}, 9);
        System.out.println(Arrays.toString(result));
    }
}
